package igou.togogo.service.impl;

import igou.togogo.service.IpictureService;
import igou.togogo.utils.FtpUtil;
import igou.togogo.utils.IDUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

@Service
public class PictureServiceImpl implements IpictureService {

    /*
    * 1:上传图片分类 按时间
    * 2：图片重命名 安装时间+随机字符 长度为16位
    * */

    @Value("${FTP_ADDRESS}")
    private String FTP_ADDRESS;
    @Value("${FTP_PORT}")
    private Integer FTP_PORT;
    @Value("${FTP_USERNAME}")
    private String FTP_USERNAME;
    @Value("${FTP_PASSWORD}")
    private String FTP_PASSWORD;
    @Value("${FTP_BASE_PATH}")
    private String FTP_BASE_PATH;
    @Value("${IMAGE_BASE_URL}")
    private String IMAGE_BASE_URL;

    private DateFormat df = new SimpleDateFormat("/yyyy/MM/dd");

    @Override
    public Map uploadPicture(MultipartFile uploadFile) {
        Map<String,Object> resultMap = new HashMap<String,Object>();
        try {
            //生成一个新的文件名
            //取原始文件名
            String oldName = uploadFile.getOriginalFilename();
            //生成新文件名
            //UUID.randomUUID();
            String newName = IDUtils.genImageName();
            //得到文件的后缀名称
            String lastfix = oldName.substring(oldName.lastIndexOf("."));
            //构建出一个新的文件名
            newName = newName + lastfix;
            //图片上传
            String imagePath = df.format(new Date());
            boolean result = FtpUtil.uploadFile(FTP_ADDRESS, FTP_PORT, FTP_USERNAME, FTP_PASSWORD,
                    FTP_BASE_PATH, imagePath, newName, uploadFile.getInputStream());
            //返回结果
            if(!result) {
                resultMap.put("error", 1);
                resultMap.put("message", "文件上传失败");
                return resultMap;
            }
            resultMap.put("error", 0);
            //url：图片的访问地址，该地址将保存到数据库
            resultMap.put("url", IMAGE_BASE_URL + imagePath + "/" + newName);
            System.out.println("***url==>"+resultMap.get("url"));
            return resultMap;

        } catch (Exception e) {

            resultMap.put("error", 1);
            resultMap.put("message", "文件上传发生异常");
            return resultMap;
        }
    }
}
